package UnionSearchSet;

import node.TreeNode;

import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

public class UnionSearchSet {

    private  static  HashMap<Integer, TreeSet<Integer>>   set;     //key表示集合的编号   value表示集合元素

    //初始化集合
    public UnionSearchSet(){
        set  =  new HashMap<>();
    }
    //传入数组  该数组为集合编号
    public UnionSearchSet(int[] arr){
        set  =  new HashMap<>();
        for (int a: arr){
            TreeSet<Integer> tree = new TreeSet<>();
            set.put(a,tree);
        }
    }

    //查看a号集合中是否存在整数n
    public static boolean search(int a,int n){
        return set.get(a).contains(n);
    }

    //将指定两个集合进行合并
    public static void union(int a,int b){
        set.get(a).addAll(set.get(b));   //将setb中所有元素加入a中
    }

    //查看当前元素属于哪个集合
    public static int isBelong(int a){
        Set<Integer> s = set.keySet();
        Iterator<Integer> it = s.iterator();
        while (it.hasNext()){
            int temp = it.next();
            if (set.get(temp).contains(a)){
                return temp;
            }
        }
        DecimalFormat df = new DecimalFormat("0.00000");
        return -1;  //表示不存在
    }

    public double quickMul(double x, long N) {
        if (N == 0) {
            return 1.0;
        }
        double y = quickMul(x, N / 2);
        return N % 2 == 0 ? y * y : y * y * x;
    }

    public double myPow(double x, int n) {
        long N = n;
        return N >= 0 ? quickMul(x, N) : 1.0 / quickMul(x, -N);
    }

    /*
    * 1 2
    * 2 3
    * 3 4
    * 4 5
    * 5 6
    * */
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5,6};
        UnionSearchSet set = new UnionSearchSet(arr);
        int[][] rea = {
            {1,2},
            {2,3},{3,4},{4,5},{5,6}
        };
        //对于每一组关系 从set中第一个开始遍历 对于关系a b 如果遍历到的集合中出现a  则将b中所有元素移动到a中  否则移入a中
        for (int[] a:rea){
            int x = a[0],y=a[1];
        }
    }
}
